package com.aishua.fire.mapper;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Component;

import com.aishua.fire.entity.addressBook.AddressBookInfo;
import com.aishua.fire.entity.organization.AddOrganizationInfo;
import com.aishua.fire.entity.organization.AddRoleInfo;
import com.aishua.fire.entity.organization.DeleteUserToOrganizationInfo;
import com.aishua.fire.entity.organization.OrganizationInfo;
import com.aishua.fire.entity.selectrole.RoleInfo;
import com.aishua.fire.entity.selectrole.SelectRoleBean;

@Component
public interface OrganizationMapper
{
	/**
	 * 校验组织结构 部门名称是否重复
	 * @param s_name
	 * @return
	 */
	List<String> findByUserName(String s_name);
	
	/**
	 * 插入组织结构 部门信息
	 * @param info
	 */
	void save(AddOrganizationInfo info);
	
	/**
	 * 修改组织结构 部门信息
	 */
	void updateInfo(AddOrganizationInfo info);
	
	/**
	 * 组织结构管理_删除部门信息
	 */
	void deleteOrganization(String id);

	/**
	 * 删除当前节点下的用户关系
	 * @param id
	 */
	void deleteUserAndOrganization(String id);

	/**
	 * 组织结构管理_查询部门信息列表
	 *
	 * @param id
	 * @return
	 */
	List<AddressBookInfo> selectAddressBookInfoList(String id);

	/**
	 * 组织结构管理_查询组织结构信息列表
	 */
	List<OrganizationInfo> select(Map<String, String> pa);

	/**
	 * 组织结构管理_添加当前通讯中某位员工
	 */
	/*void saveUserToOrganization(UserToOrganizationInfo info);*/

	void deleteUserToOrganization(DeleteUserToOrganizationInfo pa);

	/**
	 * 组织结构管理_查询不属于当前节点的通讯录列表
	 */
	List<AddressBookInfo> selectUserIsNotInOrganization(String id);

	/**
	 * 组织结构管理_添加当前通讯中某位员工
	 */
	void saveUserToOrganizationToMap(Map<String, String> pa);

	/**
	 * 根据父节点ID，查询子节点ID
	 * @param id
	 * @return
	 */
	List<OrganizationInfo> selectOrganizationByF_id(String f_id);

	/**
	 * 查询有多少条通讯录
	 * @param id
	 * @return
	 */
	int getAddressTotal(String id);

	/**
	 * 校验角色名称
	 * @param s_name
	 * @return
	 */
    List<String> findRoleNameByName(Map<String, String> pa);

    /**
     * 添加角色
     * @param info
     */
    void addRole(AddRoleInfo info);

    /**
     * 组织结构管理_部门管理_根据部门节点查询角色列表信息
     */
    List<AddRoleInfo> selectRole(String o_id);

    /**
     * 插入部门和角色关联关系
     * @param info
     */
    void addRoleAndOrgan(AddRoleInfo info);

    /**
     * 查询当前节点的子节点
     * @param o_id
     * @return
     */
    List<SelectRoleBean> selectOrgListByF_id(String o_id);

    /**
     * 根据部门ID，查询该部门下的角色
     * @param id
     * @return
     */
    List<RoleInfo> getRoleListByO_id(String o_id);

    /**
     * 根据组织结构节点 查询通讯录列表
     * @param o_id
     * @return
     */
    List<RoleInfo> getAddressListByO_id(String o_id);

    /**
     * 查询所有角色
     * @return
     */
    List<OrganizationInfo> getAllRole();

    /**
     * 插入角色关联
     * @param pa
     */
    void saveUserToRoleToMap(Map<String, String> pa);

    /**
     * 根据角色ＩＤ，查询角色下所有通讯录信息
     * @param id
     * @return
     */
    List<AddressBookInfo> getUserListByRoleId(String r_id);

    List<String> getr_idWitha_id(String user_id);
}
